package com.bootx.redis.listener;

import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.stereotype.Component;

/**
 * 检测redis的所有db
 * @author Tony.niu (hystrix0779@yeah.net)
 * @version V1.0
 * @date 2020/8/19
 **/
@Component
@Slf4j
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {

    public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
        super(listenerContainer);
    }

    /**
     * 针对redis数据失效事件，进行数据处理，需要注意的是只能获取到过期的key，value无法获取
     * @param message 消息
     * @param pattern 图案 - 模式匹配的信道（如果指定） - 可以为空。
     */
    @Override
    public void onMessage(Message message, byte[] pattern) {
        String expiredKey = message.toString();
        log.info("redisKey:{}过期",expiredKey);
        //可以写自己的业务逻辑代码
    }

}
